package com.oig.sys.auth.service;

import com.oig.sys.auth.dto.DepartmentDto;
import com.oig.sys.auth.dto.UserMiniDto;
import com.oig.sys.auth.entity.TbDepartUser;
import com.oig.sys.auth.entity.TbUser;
import com.oig.sys.auth.vo.DepartmentVo;
import com.oig.sys.auth.vo.UserVo;

import java.util.List;


/**
 * @author wuxl
 */
public interface ITbDepartUserService {

    /**
     * 在用户上操作，添加用户所属部门,批量添加
     * @param user 用户
     * @param departmentDtoList 部门列表
     * @return 用户所属部门列表，当前添加的
     */
    List<DepartmentVo> addUserDepart(TbUser user, List<DepartmentDto> departmentDtoList);

    /**
     * 更新用户所属部门，增删
     * @param user 用户
     * @param departmentDtoList 用户所属部门列表
     * @return 用户所属部门列表，当前最新的
     */
    List<DepartmentVo> updateUserDepart(TbUser user, List<DepartmentDto> departmentDtoList);

    /**
     * 部门添加用户，在部门上操作，批量添加用户
     * @param departId 部门id
     * @param userDtoList 部门员工id列表
     * @return 部门员工列表
     */
    List<UserVo> addDepartUser(Integer departId, List<UserMiniDto> userDtoList);

    /**
     * 在部门上操作，批量增减用户
     * @param departId 部门id
     * @param userDtoList 部门员工id列表
     * @return 部门员工列表
     */
    List<UserVo> updateDepartUser(Integer departId, List<UserMiniDto> userDtoList);

    /**
     * 部门添加用户，在部门上操作，单个添加用户
     */
    TbDepartUser addDepartUser(Integer departId, Integer userId);


    /**
     * 部门添加用户，在部门上操作，单个删除部门员工
     */
    void delDepartUser(Integer departId, Integer userId);

    /**
     * 获取部门用户
     */
    List<UserVo> getDepartUser(Integer departId);

    /**
     * 获取用户所属的所有部门信息
     */
    List<DepartmentVo> getUserDepart(Integer userId);
}
